home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / antenna / yagiu112 / test2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-07  |  1.9 KB  |  78 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <errno.h>
  4. #include "yagi.h"
  5.  
  6. extern int errno;
  7.  
  8. main(int argc, char **argv)
  9. {
  10.     double r,x,l,d;
  11.     for(d=0.0000001;d<=1;d+=0.02)
  12.     {
  13.         z21(1.0,d,0.5, &r, &x);
  14.         printf("%lf %lf %lf %lf \n", d,r,x, sqrt(r*r+x*x));
  15.     }
  16. }
  17.  
  18. /* To find the mutual impedance between to arbitary length, thin elements
  19. I used the equations on Krauss, Antennas, McGraw Hill, 1988, pp426 and
  20. 427. Original work from Brown and King, 'High Frequency Models in Antenna
  21. Investigations', Proc IRE, vol 22, pp457-480, April 1934*/
  22. void z21(double lamda, double d, double l, double *r21, double *x21)
  23. {
  24.  
  25.     double  b, cos_bl, sin_bl, sin_bl_over_2, cos_bl_over_2, c, s ;
  26.     double t1, t2, t3, t4;
  27.     double si_t1, ci_t1, si_t4, ci_t4, ci_bd, si_bd;
  28.     double ci_t2, si_t2, ci_t3, si_t3;
  29.  
  30.     b=M_PI*2/lamda;
  31.     t1=b*(sqrt(d*d+l*l)+l);
  32.     t2=0.5*b*(sqrt(4*d*d+l*l)-l);
  33.     t3=0.5*b*(sqrt(4*d*d+l*l)+l);
  34.     t4=b*(sqrt(d*d+l*l)-l);
  35.     /* To save findinding the same slow trigometric and ever slower
  36.     si and ci functions, I'll just look them up once */
  37.     cos_bl=cos(b*l);
  38.     sin_bl=sin(b*l);
  39.     sin_bl_over_2=sin(b*l/2);
  40.     cos_bl_over_2=cos(b*l/2);
  41.     s=sin_bl_over_2*sin_bl_over_2;
  42.     c=cos_bl_over_2*cos_bl_over_2;
  43.  
  44.     cisi(t1, &ci_t1, &si_t1);
  45.     cisi(t2,&ci_t2, &si_t2);
  46.     cisi(t3,&ci_t3, &si_t3);
  47.     cisi(t4, &ci_t4, &si_t4);
  48.     cisi(b*d,&ci_bd, &si_bd);
  49.     /* Real part of mutual impedance, computed as equation on page
  50.     426 of Kraus */
  51.     *r21=(30/s)*(2*(2+cos_bl)*ci_bd
  52.     -4*c*( ci_t2 + ci_t3 )
  53.     +cos_bl*( ci_t4 + ci_t1 )
  54.     +sin_bl* ( si_t1 - si_t4 -2*si_t3 +2*si_t2 ) );
  55.  
  56.     /* Imaginary part of mutual impedance, computed as equation on page
  57.     427 of Kraus */
  58.     *x21=(30/s)*(-2*(2+cos_bl)*si_bd
  59.     +4*c*( si_t2 + si_t3 )
  60.     -cos_bl*( si_t4 + si_t1 )
  61.     +sin_bl* ( ci_t1 - ci_t4 -2*ci_t3 +2*ci_t2 ) );
  62. #ifdef DEBUG
  63.     if(errno)
  64.     {
  65.         fprintf(stderr,"Errno =%d in  z21() mutual.c\n", errno);
  66.         exit(1);
  67.     }
  68. #endif
  69. }  
  70.  
  71. double ci(double x)            /* cosine integral */
  72. {
  73.     double null, result;
  74.  
  75.     cisi(x, &result, &null);
  76.     return(result);
  77. }
  78.